package br.ufrj.dcc.comp2.musica.controle;

//a
import br.ufrj.dcc.comp2.musica.modelo.Mapas;
import br.ufrj.dcc.comp2.musica.modelo.PeriodoLetivo;
import br.ufrj.dcc.comp2.musica.modelo.Pessoa;
import br.ufrj.dcc.comp2.musica.vista.FrameLogin;

public class Musica {
	private static Musica instancia = null;

	private Mapas mapas;
	private Pessoa usuarioLogado;
	private Cadastrador cadastrador;

	private FrameLogin frameLogin;
	//private FramePrincipal framePrincipal;
//haaa!
	private PeriodoLetivo periodoAtual = new PeriodoLetivo((short) 2008, (short) 2);

	private Musica() {
		cadastrador = new Cadastrador();
		carregarMapas();
		carregarLogin();
	}

	public static Musica getInstancia() {
		if (instancia == null) {
			instancia = new Musica();
		}

		return instancia;
	}

	private void carregarMapas() {
		ControladorDeArquivo ca = new ControladorDeArquivo("mapas.ser");
		mapas = (Mapas) ca.carregar();
		
		if (mapas == null) {
			System.out.println("b");
			mapas = new Mapas();
		}
	}

	private void carregarLogin() {
		/*try {
			UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
			LiquidLookAndFeel.setShowTableGrids(true);

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/

		frameLogin = new FrameLogin();
	}


	public Mapas getMapas() {
		return mapas;
	}

	/*public FramePrincipal getFramePrincipal() {
		return framePrincipal;
	}*/

	public void setUsarioLogado(Pessoa usuario) {
		this.usuarioLogado = usuario;
	}

	public Pessoa getUsuarioLogado() {
		return usuarioLogado;
	}

	public PeriodoLetivo getPeriodoAtual() {
		return periodoAtual;
	}

	public static void main(String args[]) {
		Musica.getInstancia();
	}

	public Cadastrador getCadastrador() {
		return cadastrador;
	}

	public void setMapas(Mapas mapas) {
		this.mapas = mapas;
	}
}
